package cc.mrbird.common.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @author yzb
 * @Date 2019年9月18日
 */
public class DateUtil {


    /**
     * 字符串转时间
     *
     * @param dateStr
     * @param dateFormate
     * @return
     * @author yzb
     * @Date 2019年9月18日
     */
    public static Date getStrToDate(String dateStr, String dateFormate) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormate);
        Date date = new Date();
        try {
            date = sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 日期转字符串
     *
     * @param date
     * @param dateFormate
     * @return
     * @author yzb
     * @Date 2019年9月18日
     */
    public static String getDateToStr(Date date, String dateFormate) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormate);
        String dateStr = sdf.format(date);
        return dateStr;
    }

    /**
     * 给定日期的前/后n月
     *
     * @param date
     * @param n
     * @param
     * @return
     * @author yzb
     * @Date 2019年9月18日
     */
    public static String getDateForNum(Date date, int n, String dateFormate) {
        Calendar ca = Calendar.getInstance();
        ca.setTime(date);
        ca.add(Calendar.MONTH, n);
        Date d = ca.getTime();
        String time = getDateToStr(d, dateFormate);
        return time;
    }

    /**
     * 给定日期的前/后n天
     *
     * @param date
     * @param n
     * @param dateFormate
     * @return
     * @author yzb
     * @Date 2019年10月8日
     */
    public static String getDayForNum(Date date, int n, String dateFormate) {
        Calendar ca = Calendar.getInstance();
        ca.setTime(date);
        ca.add(Calendar.DAY_OF_MONTH, n);
        Date d = ca.getTime();
        String time = getDateToStr(d, dateFormate);
        return time;
    }

    /**
     * 给定日期的前/后n天全部集合
     *
     * @param date
     * @param n
     * @param dateFormate
     * @return
     * @author yzb
     * @Date 2019年10月8日
     */
    public static List<String> getDayForNumList(Date date, int n, String dateFormate) {
        List<String> list = new ArrayList<>();
        for (int i = Math.abs(n); i > 0; i--) {
            if (n < 0) {
                n = n + 1;
            } else {
                n = n - 1;
            }
            Calendar ca = Calendar.getInstance();
            ca.setTime(date);
            ca.add(Calendar.DAY_OF_MONTH, n);
            Date d = ca.getTime();
            String time = getDateToStr(d, dateFormate);
            list.add(time);
        }
        return list;
    }


    public static void main(String[] args) {
		
		/*String sdate = "2019/9/3";
		System.out.println(DateUtil.getDateToStr(DateUtil.getStrToDate(sdate, "yyyy/M/d"), "yyyy-MM-dd"));
		System.out.println(getDayForNum(DateUtil.getStrToDate(sdate, "yyyy/M/d"), -5, "yyyy-MM-dd"));*/
        //System.out.println(DateUtil.getDateForNum(DateUtil.getStrToDate("2019/9", "yyyy/M"), -6,"yyyy/MM"));

        System.out.println(DateUtil.getDayForNumList(new Date(), -7, "yyyy-MM-dd"));

    }
}
